1. Field of the Invention
The present invention pertains to reconfigurable systems. More particularly, this invention relates to configuring a reconfigurable system having defective resources to obtain the correct operation of the system in spite of the defective resources in the system.
2. Description of the Related Art
A reconfigurable system typically refers to digital hardware having a relatively large number of programmable wire interconnections and/or gates. These programmable wire interconnections and gates are collectively referred to as resources below. The reconfigurable system can be programmed and reprogrammed to implement various logic designs. Examples of such reconfigurable systems are field programmable gate arrays (FPGAs), crossbar switches, and systems having FPGAs and/or crossbar switches.
Because of their reprogrammable nature, the reconfigurable systems can be used to design and test (i.e., prototype) logic devices. This allows the designer or manufacturer of the logic devices to find out if the logic design of a desired logic device contains any mistake without actually building the desired logic device. In addition, this allows changes in the logic design to be made relatively easily and conveniently during the design process. Once the logic design implemented in a reconfigurable system is completed and tested, if the manufacturer desires to produce the logic device in large quantities, the prototyped logic design can then be converted into an actual circuit layout to mass produce the logic device.
As the technology of fabricating semiconductor integrated circuit advances, the integration density of the reconfigurable logic system increases accordingly. In addition, the integration density of a reconfigurable logic system can be further increased by combining multiple FPGA chips to form a multi-chip module (MCM). Use of large scale integrated circuits in a reconfigurable logic system typically produces various advantages such as the enhancement of the function of the reconfigurable system and the reduction in the size and weight thereof.
However, disadvantages are also associated with the use of the large scale integrated circuits in a reconfigurable system. One disadvantage is that the large scale integration typically makes the reconfigurable system prone to defects during fabrication, thus increasing the manufacturing cost of the system. Although large and reliable systems can be manufactured by imposing extreme quality control measures and manufacturing tolerances, these measures greatly increase the manufacturing cost of the systems. On the other hand, if a device or system is found to include a defective element that cannot be repaired or replaced, the device typically becomes non-functional and must be rejected although the vast majority of elements are non-defective. This also increases the manufacturing cost of the device because it reduces the yield of the device.
One reason that the prior reconfigurable systems do not allow defects is that it is typically extremely difficult and costly to detect and locate defects in a large reconfigurable logic system to small circuit elements such as gates, wires, transistors, and crossbar switches although the reconfigurable logic system can be configured in many different ways to implement a given logic design (i.e., user design) so as to avoid all the defects in the system. This is because it is typically not possible to test arbitrary points inside an integrated circuit. The prior testing techniques for conventional digital systems only locate defects to the level of an integrated circuit chip or a replaceable unit or block within an integrated circuit. They typically are not able to locate the defects to small structures or circuit elements such as gates, wires, transistors, and crossbar switches. In addition, a test of one resource of the reconfigurable system typically requires other resources of the reconfigurable system that are known to be good or non-defective.
Thus, it is desirable to identify and avoid all of the defects of a reconfigurable logic system (i.e., to provide a defect-tolerant reconfigurable system) when configuring the reconfigurable system to implement a user design. In addition, it is also desirable to allow detection of the defects to small structures or circuit elements in the reconfigurable system in an efficient and cost-effective manner such that the reconfigurable system can be used as a defect-tolerant reconfigurable system.